import cv2
import numpy as np
import matplotlib.pyplot as plt


# canny edge detection 
# 边缘检测算法主要步骤如下：
# 1.高斯模糊降噪
# 2.使用sobel filter计算图片像素梯度
# 3.NMS非最大值移植计算局部最大值
# 5.Hysteresis thresholding 滞后阈值法过滤

# 有个大阈值和小阈值 
# 如果有一条线的像素值均匀变化 
# 其中有超过大阈值或低于小阈值
# 这条线会被认为是真正的边界点

img.cv2.imread('./test_imgs/pumpking.jpg')
img_fixed = cv2.cvtColor(img,cv2.COLOR_BGR2GRGB)
plt.imshow(img_fixed)

edges1 = cv2.Canny(img.copy(), 100, 200)
edges2 = cv2.Canny(img.copy(), 50, 200)
edges3 = cv2.Canny(img.copy(), 50, 100)

fig,(ax2,ax3,ax4) = plt.subplots(1,3,figsize=(20,8),sharex=True,sharey=True)# 一行4列

ax2.axis('off')
ax2.imshow(edges1,cmap='gray')
ax3.axis('off')
ax3.imshow(edges2,cmap='gray')
ax4.axis('off')
ax4.imshow(edges3,cmap='gray')

